#ifndef _MESHPOINTS_H
#define _MESHPOINTS_H

#include <vector>
#include <cmath>
#include <glm/glm.hpp>

#include <app/ameTypes.h>

enum Materials {
    MATERIAL_NONE,
    MATERIAL_COLOR,
    MATERIAL_EMISSION
};
enum MeshType {
    Polygon, Line, Point
};
enum Axis {
    aX, aY, aZ
};

class Vertex {
    
};

struct Mesh {
    MeshType type;
    unsigned int measurement;
    double collisionRadius;
    
    void computeCollisionRadius ();
    void computeCenterPointLocation ();

    std::vector < unsigned int > polygonID;
    std::vector < ame::vec3 > points; //real point coordinates
    std::vector < ame::vec3 > viewPoints; //edited point coordinates for render
    std::vector < ame::vec2 > textureCoordinate;
    ame::vec3 centerPoint;

    std::vector < double > pointSize; //for Line "and" "Point" mesh types

    std::vector < Materials > polygonMaterial;
    std::vector < ame::vec4 > polygonColor;

    void rotate ( double deg, Axis );
};

/*class Mesh {
public:
    
private:
    unsigned int VAO;
    unsigned int VBO;
}*/

#endif // _MESHPOINTS_H
